-
Notifications
You must be signed in to change notification settings - Fork 12.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update stdarch submodule and remove special handling in cranelift codegen for some AVX and SSE2 LLVM intrinsics #115580
Conversation
Those were removed from stdarch in rust-lang/stdarch#1463 (`<*mut _>::write_unaligned` is used instead)
…ediate intrinsics Those were removed from stdarch in rust-lang/stdarch#1463 (`simd_shl` and `simd_shr` are used instead)
r? @davidtwco (rustbot has picked a reviewer for you, use r? to override) |
|
Some changes occurred in compiler/rustc_codegen_cranelift cc @bjorn3 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM but not too familiar with this so will get a second pair of eyes
r? @bjorn3 |
Tested locally. Works fine. Thanks for working on this @eduardosm! @bors r=davidtwco,bjorn3 |
Other stdarch bump #115617 |
Didn't see that one. Both update stdarch to the exact same commit and this one also removes some now unused code in cg_clif. |
Whoops. Didn’t see this one, should all be fine though right? |
☀️ Test successful - checks-actions |
Finished benchmarking commit (b0d4553): comparison URL. Overall result: ❌ regressions - no action needed@rustbot label: -perf-regression Instruction countThis is a highly reliable metric that was used to determine the overall result at the top of this comment.
Max RSS (memory usage)ResultsThis is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
CyclesThis benchmark run did not return any relevant results for this metric. Binary sizeThis benchmark run did not return any relevant results for this metric. Bootstrap: 630.181s -> 628.074s (-0.33%) |
…dtwco,bjorn3 Update stdarch submodule and remove special handling in cranelift codegen for some AVX and SSE2 LLVM intrinsics rust-lang/stdarch#1463 reimplemented some x86 intrinsics to avoid using some x86-specific LLVM intrinsics: * Store unaligned (`_mm*_storeu_*`) use `<*mut _>::write_unaligned` instead of `llvm.x86.*.storeu.*`. * Shift by immediate (`_mm*_s{ll,rl,ra}i_epi*`) use `if` (srl, sll) or `min` (sra) to simulate the behaviour when the RHS is out of range. RHS is constant, so the `if`/`min` will be optimized away. This PR updates the stdarch submodule to pull these changes and removes special handling for those LLVM intrinsics from cranelift codegen. I left gcc codegen untouched because there are some autogenerated lists.
rust-lang/stdarch#1463 reimplemented some x86 intrinsics to avoid using some x86-specific LLVM intrinsics:
_mm*_storeu_*
) use<*mut _>::write_unaligned
instead ofllvm.x86.*.storeu.*
._mm*_s{ll,rl,ra}i_epi*
) useif
(srl, sll) ormin
(sra) to simulate the behaviour when the RHS is out of range. RHS is constant, so theif
/min
will be optimized away.This PR updates the stdarch submodule to pull these changes and removes special handling for those LLVM intrinsics from cranelift codegen. I left gcc codegen untouched because there are some autogenerated lists.